package com.archie.zhufengfm.widgets;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.archie.zhufengfm.Constants;
import com.archie.zhufengfm.R;
import com.archie.zhufengfm.utils.DimensionUtil;

/**
 * Created by Archie on 2015/10/22.
 */

/**
 * 用于在“发现”模块中 推荐栏目中“精品听单”的条目展现
 */
public class SpecialItemView extends RelativeLayout {

    // 听单图片
    private ImageView imgIcon;
    private TextView txtTitle;
    private TextView txtSubtitle;
    private TextView txtNumber;
    // 最右侧的箭头
    private ImageView imgArrow;
    // 底部的线段
    private ImageView imgLine;

    /**
     * 在代码中使用 new SpecialItemView 的时候，调用这个构造
     * @param context
     */
    public SpecialItemView(Context context) {
        this(context, null);
    }

    /**
     * 在布局xml中，使用控件的时候，使用的构造
     * @param context
     * @param attrs
     */
    public SpecialItemView(Context context, AttributeSet attrs) {
        super(context, attrs);

        init(context, attrs);
    }

    private void init(Context context, AttributeSet attrs){

        // 初始化控件
        imgIcon = new ImageView(context);

        // 手写属性
        // LayoutParams 代表在布局中的 android：layout_XXX 属性
        // 控件要添加到哪一个容器中，就用哪一个容器的 LayoutParams
        RelativeLayout.LayoutParams lp = new LayoutParams(
                DimensionUtil.dp2px(context, 60), // Android 代码中，所有的尺寸，单位都是 px 像素
                DimensionUtil.dp2px(context, 60)
        );

        // ImageView 垂直居中
        // 相当于layout_centerVertical = "true"
        lp.addRule(CENTER_VERTICAL);

        lp.topMargin = DimensionUtil.dp2px(context, 8);
        lp.bottomMargin = DimensionUtil.dp2px(context, 8);

        imgIcon.setLayoutParams(lp);

        // 设置ImageView的Id，注意看value/special_item_ids.xml
        imgIcon.setId(R.id.special_item_icon);

        imgIcon.setImageResource(R.mipmap.ic_launcher);

        addView(imgIcon);

        // ------------------------------------------------------------

        // 标题部分
        txtTitle = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );

        // 设置 TextView 与 ImageView 顶部对齐,在ImageVIew 右侧
        lp.addRule(ALIGN_TOP, R.id.special_item_icon);
        lp.addRule(RIGHT_OF, R.id.special_item_icon);

        // 10dp
        lp.leftMargin = DimensionUtil.dp2px(context, 10); // 单位像素，需要进行机型适配

        lp.rightMargin = DimensionUtil.dp2px(context, 30);

        txtTitle.setLayoutParams(lp);

        txtTitle.setText("标题");

        txtTitle.setEllipsize(TextUtils.TruncateAt.END);

        // 设置字体尺寸
        txtTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);

        txtTitle.setTextColor(Color.parseColor("#585858"));

        txtTitle.setId(R.id.special_item_title);

        txtTitle.setSingleLine();

        addView(txtTitle);

        // ----------------------------------------------------------

        txtSubtitle = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );

        // 垂直居中
        lp.addRule(CENTER_VERTICAL);

        lp.addRule(ALIGN_LEFT, R.id.special_item_title);

        lp.rightMargin = DimensionUtil.dp2px(context, 30);

        txtSubtitle.setLayoutParams(lp);

        txtSubtitle.setText("Subtitle");

        txtSubtitle.setTextColor(Color.parseColor("#9E9E9E"));

        txtSubtitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);

        txtSubtitle.setId(R.id.special_item_subtitle);

        txtSubtitle.setEllipsize(TextUtils.TruncateAt.END);

        // 单行显示
        txtSubtitle.setSingleLine();

        addView(txtSubtitle);

        // ------------------------------------------------------------------

        txtNumber = new TextView(context);

        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
        );

        // 设置对齐，与图片底部对齐，与标题左对齐
        lp.addRule(ALIGN_BOTTOM, R.id.special_item_icon);
        lp.addRule(ALIGN_LEFT, R.id.special_item_title);

        txtNumber.setLayoutParams(lp);

        txtNumber.setText("10首声音");

        txtNumber.setTextColor(Color.parseColor("#9B9B9B"));

        txtNumber.setEllipsize(TextUtils.TruncateAt.END);

        txtNumber.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11);

        // 给TextView 设置左侧图标
        // 可以同时设置左上右下图标，图标必须经过setBounds（）
        // 使用v4包获取Drawable方式
        Drawable drawableLeft =
                ContextCompat.getDrawable(context, R.mipmap.finding_album_img);

        drawableLeft.setBounds(0, 0, 20, 20);

        txtNumber.setCompoundDrawables(drawableLeft, null, null, null);

        txtNumber.setId(R.id.special_item_number);

        addView(txtNumber);

        // ------------------------------------------------------------------

        imgArrow = new ImageView(context);

        lp = new LayoutParams(
                DimensionUtil.dp2px(context, 9),
                DimensionUtil.dp2px(context, 15)
        );

        lp.rightMargin = DimensionUtil.dp2px(context, 12);

        imgArrow.setImageResource(R.mipmap.arrow_right);

        // 容器右对齐，居中
        lp.addRule(ALIGN_PARENT_RIGHT);
        lp.addRule(CENTER_VERTICAL);

        imgArrow.setLayoutParams(lp);

        addView(imgArrow);

        // ---------------------------------------------------------------------

        imgLine = new ImageView(context);

        // 一个像素高度的图片
        lp = new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                1
        );

        // 与title 左对齐
        lp.addRule(ALIGN_LEFT, R.id.special_item_title);

        lp.addRule(ALIGN_PARENT_RIGHT);

        lp.addRule(BELOW, R.id.special_item_icon);

        lp.topMargin = DimensionUtil.dp2px(context, 12);

        // 指定线与数量的间距,左上右下
        int topMargin = DimensionUtil.dp2px(context, 5);
        lp.setMargins(0, topMargin, 0, 0);

        imgLine.setLayoutParams(lp);

        imgLine.setImageResource(R.drawable.shape_line);

        addView(imgLine);

    }

    /**
     * 设置标题
     * @param str
     */
    public void setTitle(String str){

        txtTitle.setText(str);

    }

    /**
     * 设置描述
     * @param str
     */
    public void setSubtitle(String str){

        txtSubtitle.setText(str);

    }

    /**
     * 设置数量
     * @param str
     */
    public void setNumber(String str){

        txtNumber.setText(str);

    }

    /**
     * 设置底部的线是否显示
     * @param show
     */
    public void setShowBottomLine(Boolean show){

        if(show){

            imgLine.setVisibility(VISIBLE);

        }else{

            // TODO 尝试 GONE 的情况
            imgLine.setVisibility(INVISIBLE);

        }

    }

    /**
     * 设置右侧的图标
     * @param resource
     */
    public void setRightArrowResource(int resource){

        imgArrow.setImageResource(resource);

    }

    public ImageView getImgIcon(){

        return imgIcon;

    }
}
